#include <stdio.h>
#include <stdlib.h>
#define MaxVertexNum 100

//图的表示
/*
邻接矩阵
0：表示不邻接
1：表示邻接

适合存储边很多的情况

★   A^n的元素A^n[i][j]等于有顶点i到顶点j的长度为n的路径的数目

*/
typedef struct
{
    char Vex[MaxVertexNum];               // 每个顶点存储的信息
    int Edge[MaxVertexNum][MaxVertexNum]; //邻接矩阵
    int vexnum, arcnum;                   //当前顶点数和边数
} MGraph;

//邻接表
/*
顺序存储每个顶点，每个顶点指向第一个边，这个节点依次指向该顶点其他边
找入边不方便
*/
//边
typedef struct ArcNode
{
    int adjvex;           //边指向那个顶点
    struct ArcNode *next; //指向下一条弧的指针
} ArcNode;

typedef struct VNode
{
    int data;       //数据域
    ArcNode *first; //第一条边
} VNode, AdjList[MaxVertexNum];

typedef struct
{
    AdjList vertices;
    int vexnum, arcnum;
} ALGraph;



//十字链表法(存储有向图)




//邻接多重表（存储无向图）


int main()
{
    printf("\n\n========================================================================\n\n");

    printf("\n\n========================================================================\n\n");
    return 0;
}